'''
Created on 2017年10月5日

@author: Wyndem
'''
from _functools import reduce
'''
一:
利用map()函数，把用户输入的不规范的英文名字，变为首字母大写，其他小写的规范名字。
输入：['adam', 'LISA', 'barT']，输出：['Adam', 'Lisa', 'Bart']：

二、
请编写一个prod()函数，可以接受一个list并利用reduce()求积：

三、利用map和reduce编写一个str2float函数，把字符串'123.456'转换成浮点数123.456：
'''

def normalize(name):
    return name.lower().capitalize()

def prod(x,y):
    return x*y

def str2float(s):
    
    def fn(x,y):
        return x*10+y
    def char2num(s):
     return {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}[s]
    #查找.再第几位
    index=s.index('.')
    #拿到小数前面的
    x=list(s[:index])
    #拿到小数后面的
    y=list(s[index+1:])
    return reduce(fn, map(char2num,x))+(reduce(fn, map(char2num,y))/10**index)
if __name__ == '__main__':
    #第一题
    L1 = ['adam', 'LISA', 'barT']
    print(list(map(normalize,L1)))
    #第二题
    print(reduce(prod,[1,2,3,4]))
    #第三题：
    print(str2float('123.456'))
    
    
    